package main

import (
	"encoding/json"
	"fmt"
	"github.com/go-redis/redis"
	"io/ioutil"
	"os"
	"strconv"
)

type CityCodeId struct {
	AdministrativeNumber string `json:"administrative_number"`
	LatitudeLongitude    string `json:"latitude_longitude"`
}

// CoordinateWriteMarshal 将行政编号和坐标号，写入到文件中
func CoordinateWriteMarshal(Info map[string]string) {

	jsonbytes, err := json.Marshal(Info)
	if err != nil {
		fmt.Println(err)
	}
	fp, err := os.OpenFile("C:\\Users\\admin\\Desktop\\新建文件夹 (2)\\json.txt", os.O_RDWR|os.O_CREATE, 0755)
	if err != nil {
		fmt.Println(err)
	}
	defer fp.Close()
	_, err = fp.Write(jsonbytes)
	if err != nil {
		fmt.Println(err)
	}

}
func RedisOperation(redisMap map[string]string) {
	GlobalClient = redis.NewClient(
		&redis.Options{
			Addr: "127.0.0.1:6379",
		},
	)
	err := GlobalClient.Ping().Err()
	if nil != err {
		panic(err)
	}
	//fmt.Println("链接redis成功")

	for s, s2 := range redisMap {

		tempSplices := Segmentation(s2, ",")
		f, _ := strconv.ParseFloat(tempSplices[0], 7)
		f2, _ := strconv.ParseFloat(tempSplices[1], 7)
		// 将行政区号和经纬度GeoAdd添加进去
		_, err := GlobalClient.GeoAdd("key", &redis.GeoLocation{
			Name:      s,
			Longitude: f,
			Latitude:  f2,
		}).Result()
		if err != nil {
			fmt.Println(err)
		}
	}

}

// QueryCoordinate 通过行政区号获取经纬度坐标
func QueryCoordinate(ultimatelyMap map[string]string) []string {
	// var resPos []*redis.GeoPos
	// 遍历map获取行政区号，通过行政区号，查经纬度
	// 通过行政区号查value
	var Coordinates []string
	//Coordinate :=make([]string,2900)	// 有2900个经纬度需要存储
	for _, value := range ultimatelyMap {
		Coordinates = append(Coordinates, value)
	}
	return Coordinates
}

// MapToJsonDemo1 将map[行政区]经纬度 写入到配置文件中
func MapToJsonDemo1(mapInstances map[string]string){
	jsonStr ,_:=json.Marshal(mapInstances)
	ioutil.WriteFile(filePath,jsonStr,0777)
}

// ReadFromJson 从配置文件中读取map[行政区]经纬度 到内存中
func ReadFromJson(mapResult map[string]string)  {
	data,err :=ioutil.ReadFile(filePath)
	if err != nil {
		fmt.Println(err)
	}
	err = json.Unmarshal(data, &mapResult)
	if err != nil {
		fmt.Println("JsonToMapDemo err: ", err)
	}
	//114.04491215944290161"
	//       2) "22.69673605550644879
}
func QueryReqMap(map[string]string)  {

}